## 内存管理寄存器 处理器一共提供了四个内存管理寄存器(GDTR,LDTR,IDTR,TR)来索引控制分段内存的数据结构。它们的结构如下: 系统表寄存器: | 47/79 | | | | ----- | --------------- | ---------- | | GDTR | 32/64位线性基址 | 16位表界限 | | IDTR | 32/64位线性基址 | 16位表界限 | | | 15-0 | | | 属性 | | ------------- | -------- | --------------- | ------ | ---- | | Task Register | Seg.Sel. | 32/64位线性基址 | 段界限 | | | LDTR | Seg.Sel. | 32/64位线性基址 | 段界限 | | #### 1.全局描述表寄存器(GDTR) ​ GDTR寄存器保存了全局描述表(GDT)的基址(在保护模式下32位,在IA-32e模式下64位)和16位的段界限。基址指定了GDT的起始地址(线性地址)。段界限指定了GDT的大小。 ​ LGDT和SGDT分别用来加载和储存GDTR寄存器。在开机或重置CPU时,基址和界限被缺省为0和0x0FFFF。要想进入保护模式,GDTR必须被重新加载一个基址。 #### 2.本地描述符表(LDTR) ​ LDTR保存了16位的段选择子,基址(在保护模式下32位,在IA-32e模式下64位),段界限和LDT的描述符。 ​ LLDT和SLDT用来记载和储存GDTR寄存器的段选择子部分。并且加载到LDTR的段必须在GDT中有定义。当LLDT加载一个段选择子时,LDT描述符会自动被加载到LDTR。 ​ 在任务转换时,LDTR会自动为新任务加载段选择子和短描述符。当新的LDT被加载到LDTR时,LDTR不会自动保存。 ​ 在开机或重置CPU时,基址和界限被缺省为0和0x0FFFF。 #### 3.中断描述符表寄存器(IDTR) ​ IDTR寄存器保存了全局描述表(IDT)的基址(在保护模式下32位,在IA-32e模式下64位)和16位的段界限。基址指定了IDT的起始地址(线性地址)。段界限指定了IDT的大小。 ​ LIDT和SIDT分别用来加载和储存IDTR寄存器。在开机或重置CPU时,基址和界限被缺省为0和0x0FFFF。在CPU初始化时,其值可以被改变 #### 4.任务寄存器(TR)